package com.lap.i18n.starter.helper;

import java.util.Locale;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;

/**
 * 信息资源组件,这个 import 方式来初始化。
 *
 * @author Shuisheng Lao(劳水生)
 * @version 0.0.1
 */
@Slf4j
public record MessageHelper(MessageSource messageSource) {

  @PostConstruct
  public void init() {
    log.info("Initializer message support:{}", messageSource);
  }

  /**
   * 根据编码获取资源信息
   *
   * @param code 编码
   * @return 资源对象
   */
  public String getMsg(String code) {
    return this.getMsg(code, ArrayUtils.EMPTY_OBJECT_ARRAY);
  }

  /**
   * 根据参数获取资源信息
   *
   * <dl>
   * <dt>code :
   * <dd>properties的key。
   * <dt>apogee :
   * <dd>配置文件value占位符,如: 0001=error{0},{1}
   * </dl>
   *
   * @param code 异常码
   * @param obj 占位符
   * @return 资源对象
   */
  public String getMsg(String code, Object... apogee) {
    Locale locale = LocaleContextHolder.getLocale();
    return messageSource.getMessage(code, apogee, locale);
  }
}
